// 提供API的网络接口
#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QMap>
#include <QMutex>
#include <QStringList>
#include <QJsonDocument>
#include <QJsonObject>

class QNetworkReply;

class NetworkManager: public QObject
{
    Q_OBJECT
    Q_DISABLE_COPY_MOVE(NetworkManager) // 禁止拷贝移动
    friend class BaiduPinyinApi;
	
public:
	// 单例获取接口
    static NetworkManager* getInstance(QObject* parent = nullptr);
    ~NetworkManager() override;

    // api 相关 发送POST 返回reply，需上层自行管理
    QNetworkReply* sendPostRequest(const QString& urlStr, const QMap<QString, QString>& params);
    // 设置超时时间（ms）
    void setTimeout(int ms) { m_timeout = ms; }

private:
	explicit NetworkManager(QObject* parent = nullptr);

    // tools
    void initSSLConfig();     // 初始化HTTPS SSL配置（解决证书问题） 强制TLS 1.2+

private:
	static NetworkManager* m_instance;
    static QMutex m_instanceMutex;

    QNetworkAccessManager* m_nam;                  // 网络请求核心实例
    int m_timeout = 5000;                    // 网络请求超时时间（5秒）

};


#endif	// NETWORKMANAGER_H